﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Ink;
using System.Windows.Input;

namespace Diagram
{
    [Serializable]
    public class Element    
    {
            
        public bool ShowInGui;
        public Element()
        {
            ShowInGui = true;
        }
        public ModelUML.ElementUML element;
        public ModelUML.ElementUML ElemenT
        {
            set
            {
                element = value;
            }
        }
        public String Nazwa
        {
            get
            {
                return element.Nazwa;
            }
            set
            {
                try
                {
                    element.Nazwa = value;
                }
                catch (ModelUML.NameException ex)
                {
                    throw ex;                    
                }
            }
        }
        public String Visibility
        {
            get
            {
                switch (element.Visibility)
                {
                    case (ModelUML.VisibilityKindUML.@private):
                        return "-";
                    case (ModelUML.VisibilityKindUML.@package):
                        return "~";
                    case (ModelUML.VisibilityKindUML.@protected):
                        return "#";
                    case (ModelUML.VisibilityKindUML.@public):
                        return "+";
                    default:
                        throw new Exception("jakis blad z visibility");
                }
            }
            set
            {
                switch (value)
                {
                    case "+": element.Visibility = ModelUML.VisibilityKindUML.@public; return;
                    case "-": element.Visibility = ModelUML.VisibilityKindUML.@private; return;
                    case "#": element.Visibility = ModelUML.VisibilityKindUML.@protected; return;
                    case "~": element.Visibility = ModelUML.VisibilityKindUML.package; return;
                    default: throw new Exception("złe oznakowanie widoczności elementu: " + element.Nazwa);
                }
            }
        }
        public bool JestAsocjacja
        {
            get {
                return element.JestAsocjacja;
            }            
        }
        public bool JestAtrybutem
        {
            get 
            {
                return element.JestAtrybutem;                
            }
        }
        public bool JestKlasa
        {
            get
            {
                return element.JestKlasa;                
            }
        }
        public bool JestNotatka
        {
            get
            {
                return element.JestNotatka;
            }
        }
        public bool JestOperacja
        {
            get
            {
                return element.JestOperacja;                
            }
        }
        public bool JestTypemDanych
        {
            get
            {
                return element.JestTypemDanych;
            }
        }
        public bool JestAktorem
        {
            get
            {
                return element.JestAktorem;
            }
        }
        public bool JestPrzypadkiemUzycia
        {
            get 
            {
                return element.JestPrzypadkiemUzycia;
            }
        }
        public bool JestInterfejsem
        {
            get
            {
                return element.JestInterfejsem;
            }
        }
           
    
    }
}
